package com.wxprogram.smallprogram.controller;

import com.wxprogram.smallprogram.service.UserInfoReqService;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
@RestController
public class LoginServlet {
    @Autowired
    UserInfoReqService userInfoReqService;
    @RequestMapping("/login.action")
    public String login(@RequestParam(name = "code")String code){
        String result = getOpenID(code);
        JSONObject object = JSONObject.fromObject(result);
        String openID = object.getString("openid").trim();
//        String openID = "12345";
        int degree = userInfoReqService.checkDegree(openID);
        String json = "{\"openid\":\""+ openID + "\",\"degree\":\""+ degree +"\"}";
        return json;
    }

    private String getOpenID(String code){
        String result = "";
        BufferedReader in = null;
        try {
            String urlNameString = "https://api.weixin.qq.com/sns/jscode2session?appid=wx0d375202c809ae4b&secret=8e969ecb1a3aca394390d6b86d4390a9&grant_type=authorization_code&js_code=" + code;
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立实际的连接
            connection.connect();
            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送GET请求出现异常！" + e);
            e.printStackTrace();
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return result;
    }
}
